#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
typedef struct Student{
	int ID;
	int Class;
	string name;
	double s1;
	double s2;
	double s3;
	double s;
}Stu;
void Sort(Stu stu[],int len);
void Init(Stu stu[],int len);
void Print(Stu stu[],int len);
int main()
{
	Stu stu[7]={
		{10001,11,"Zhang", 99.5, 88.5, 89.5}
		,{10002,12,"Yang",77.9, 56.5,87.5}
		,{10003,11,"Liang",92.5, 99.0, 60.5}
		,{10004,11,"Cai", 93.6 ,67.9 ,90.5}
		,{10005,14,"Fu",55.6, 67.9,98.9}
		,{10006,12,"Mao", 22.1, 45.9, 99.2}
		,{10007,13,"Zhan", 35.6, 67.9, 88.0}
	};
	Init(stu,7);
	Sort(stu,7);
	Print(stu,7);
	return 0;
}
void Init(Stu stu[],int len)
{
	for(int i=0;i<len;i++){
		stu[i].s=stu[i].s1+stu[i].s2+stu[i].s3;
	}
}
void Sort(Stu stu[],int len)
{
	for(int i=0;i<len-1;i++){
		for(int j=0;j<len-1-i;j++){
			if(stu[j].Class>=stu[j+1].Class){
				Stu temp=stu[j];
				stu[j]=stu[j+1];
				stu[j+1]=temp;
				if(stu[j].Class==stu[j+1].Class){
					if(stu[j].s<=stu[j+1].s){
				Stu temp=stu[j];
				stu[j]=stu[j+1];
				stu[j+1]=temp;
				if(stu[j].s==stu[j+1].s){
					if(stu[j].s1<stu[j+1].s1){
				Stu temp=stu[j];
				stu[j]=stu[j+1];
				stu[j+1]=temp;
					}
				}
					}
				}
			}
		}
	}
}
void Print(Stu stu[],int len)
{
	for(int i=0;i<len;i++){
		if(i==0){
			cout<<stu[i].ID<<' '<<stu[i].Class<<' '
				<<stu[i].name<<' '
				<<setiosflags(ios::fixed)<<setprecision(1)
				<<stu[i].s1<<' '
				<<setiosflags(ios::fixed)<<setprecision(1)
				<<stu[i].s2<<' '
				<<setiosflags(ios::fixed)<<setprecision(1)
				<<stu[i].s3
				<<' '
				<<stu[i].s;
		}else {
			cout<<endl<<stu[i].ID<<' '<<stu[i].Class<<' '
				<<stu[i].name<<' '
				<<setiosflags(ios::fixed)<<setprecision(1)
				<<stu[i].s1<<' '
				<<setiosflags(ios::fixed)<<setprecision(1)
				<<stu[i].s2<<' '
				<<setiosflags(ios::fixed)<<setprecision(1)
				<<stu[i].s3
				<<' '
				<<stu[i].s;
		}
	}
}
